namespace typeOFApply {
    let se = "hello";
    let n: typeof se;

    let obj = {
        x: 10,
        y: 3,
    };

    const objj = {
        x: 1,
        y: 3
    };

    // 如果当作赋值语句的话会赋值所有基本类型
    let aaaaa = typeof 131;
    let bbbbbb: typeof objj;

    //注意当为const定义typeof返回该值
    const a = "nihao";

    let aa: typeof a;

    //   aa = "lasld"; //不能将类型“"lasld"”分配给类型“"nihao"”。

    function add(x: number, y: number) {
        return x + y;
    }

    // 如果是函数使用typeof返回整个函数
    const myAdd: typeof add = function (x: number, y: number): number {
        return x + y;
    };


    function f() {
        return {x: 10, y: 3};
    }

    // 基本上的typeof结合是returntype使用(函数 返回值)
    type Pe = typeof f;
    const S: Pe = function () {
        return {x: 3, y: 3}
    }
    type os = ReturnType<typeof f>
    const SS: os = {
        x: 3,
        y: 3
    }


    type Predicate = (x: unknown) => boolean;
    type P = ReturnType<Predicate>
}
